package com.xmall.msg.queue;

/**
 * 订单模块
 */
public interface OrderModule {

    /**
     * 创建订单
     */
    interface OrderCreate {
        String ORDER_CREATE_FANOUT_EXCHANGE = "order.order.create.fanout.exchange";
        String ORDER_CREATE_QUEUE = "order.create.order.queue";
        String ORDER_CREATE_ROUTING_KEY = "order.create.order.key";
    }

    /**
     * 公共交换机
     */
    interface CommonExchange {
        String ORDER_DIRECT_EXCHANGE = "order.order.direct.exchange";
    }

    /**
     * 订单支付检查（延时执行）
     */
    interface OrderPayCheck {
        String DELAY_ORDER_PAY_CHECK_QUEUE = "order.delay.order.pay.check.queue";
        String DELAY_ORDER_PAY_CHECK_ROUTING_KEY = "order.delay.order.pay.check.key";

        String ORDER_PAY_CHECK_QUEUE = "order.order.pay.check.queue";
        String ORDER_PAY_CHECK_ROUTING_KEY = "order.order.pay.check.key";
    }

    /**
     * 取消订单检查（延时执行）
     */
    interface OrderCancelCheck {
        String DELAY_ORDER_CANCEL_CHECK_QUEUE = "order.delay.order.cancel.check.queue";
        String DELAY_ORDER_CANCEL_CHECK_ROUTING_KEY = "order.delay.order.cancel.check.key";

        String ORDER_CANCEL_CHECK_QUEUE = "order.order.cancel.check.queue";
        String ORDER_CANCEL_CHECK_ROUTING_KEY = "order.order.cancel.check.key";
    }

    /**
     * 订单取消
     */
    interface OrderCancel {
        String ORDER_CANCEL_FANOUT_EXCHANGE = "order.order.cancel.fanout.exchange";
        String ORDER_CANCEL_QUEUE = "order.order.cancel.queue";
        String ORDER_CANCEL_ROUTING_KEY = "order.order.cancel.key";
    }

    /**
     * 订单支付成功
     */
    interface OrderPaySuccess {
        String ORDER_PAY_SUCCESS_FANOUT_EXCHANGE = "order.order.pay.success.fanout.exchange";
        String ORDER_PAY_SUCCESS_QUEUE = "order.order.pay.success.queue";
        String ORDER_PAY_SUCCESS_ROUTING_KEY = "order.order.pay.success.key";
    }

    /**
     * 订单退款
     */
    interface OrderRefund {
        String ORDER_REFUND_QUEUE = "order.order.refund.queue";
        String ORDER_REFUND_ROUTING_KEY = "order.order.refund.key";
    }

}
